import Vue from 'vue'
import App from './App.vue'
import router from './router'
// 引入element组件
import ElementUI from 'element-ui'
// 引入共用的css样式
import './assets/css/global.css'
// 引入 nprogress
// import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
// 引入fonts

import './assets/fonts/iconfont.css'
// 引入、配置axios
import axios from 'axios'

axios.defaults.baseURL = 'http://127.0.0.1:11333/api/private/v1/'
// 请求拦截器
axios.interceptors.request.use(
  function(config) {
    // 业务逻辑实现
    // 开启进度条
    NProgress.start()

    var token = window.sessionStorage.getItem('token')
    // 给axios配置token 写在拦截器中就不用每次请求的时候配置了
    config.headers.Authorization = token
    return config
  },
  function(error) {
    return Promise.reject(error)
  }
)
Vue.prototype.$http = axios

// 注册element
Vue.use(ElementUI)
Vue.config.productionTip = false

new Vue({
  created() {
    this.$http.interceptors.response.use(
      // 后面使用了this所以把这里改成箭头函数让this找到vue里面的this
      response => {
        // 业务逻辑实现
        //response 打印出来可以找到asxio请求返回的data数据
        // console.log(response)
        // 关闭进度条
        NProgress.done()

        if (
          response.data.meta.status !== 200 &&
          // 添加用户返回的状态吗是201 接口文档可以看到
          response.data.meta.status !== 201
        ) {
          return this.$message.error(response.data.meta.msg)
        }

        return response
      },
      function(error) {
        return Promise.reject(error)
      }
    )
  },
  router,
  render: h => h(App)
}).$mount('#app')
